# 查找当前目录下的*.cc文件的路径存到SRC_DIRS中
# GLOB：表示使用后面的通配符进行查找
# SRC_DIRS：查找到的文件路径的存储变量
# ${CMAKE_CURRENT_SOURCE_DIR}：当前正在处理的CMakeLists.txt所在路径，即当前源文件所在路径
file(GLOB SRC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/*.cc)
# 查找当前目录下所有的*.pb.cc文件的路径到PROTO_DIRS中
file(GLOB PROTO_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/*.pb.cc)

# 创建静态库
# myrpc_core：库的名字
# STATIC：库的类型，当前为静态库，还有SHARED(共享库，动态库)
# 后面是生成库的源文件路径，包括.h或.cc
add_library(myrpc_core STATIC ${SRC_DIRS} ${PROTO_DIRS})

# 用于将一个或多个库链接到目标
# myrpc_core：当前目标，通常是可执行文件或库
# PUBLIC：链接库的作用域，PUBLIC:影响当前目标及依赖当前目标的其他目标；
# PRIVATE：仅影响当前目标；INTERFACE：不影响当前目标，但影响依赖当前目标的其他目标
# protobuf：需要链接的库，可以是系统库，外部库或者Cmake中定义的库
target_link_libraries(myrpc_core PUBLIC protobuf)

# 为指定的目标设置包含头文件的目录
# myrpc_core：目标名称(可执行文件或库)
# PUBLIC：跟上面意思一样
# 后面的部分则是.h头文件所在的目录
target_include_directories(myrpc_core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

# 为指定目标添加编译选项
# PRIVATE：跟上面意思一样
# 后面的部分可以类比g++命令，添加编译的选项，-Wall表示代码警告选项
target_compile_options(myrpc_core PRIVATE -std=c++11 -Wall -g)


